package com.huayi.breakpoint_continuation_interface.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;


public class RedisUtil {

    private static JedisPool jedisPool;
    //用于创建连接池的方法，避免每一次使用都要创建
    public static void initJedisPool() {

        //TODO 1、获取连接池，我们可以将获取连接操作单独封装在一个方法中，免得每次都要获取
        //todo 1.2 对Jedis配置文件一些设置
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //设置最大闲置连接数，就是池子里面最多有5个空闲，多了就不要了
        jedisPoolConfig.setMaxIdle(5);
        //设置对消闲置连接数
        jedisPoolConfig.setMinIdle(5);
        //设置最大可用连接数
        jedisPoolConfig.setMaxTotal(100);
        //连接耗尽是否等待
        jedisPoolConfig.setBlockWhenExhausted(true);
        //等待时间
        jedisPoolConfig.setMaxWaitMillis(2000);
        //取连接的时候进行测试一下 ping  pong
        jedisPoolConfig.setTestOnBorrow(true);

        //todo 1.1 发现需要一些配置文件和端口号么有就new出来
        //参数说明：配置文件，地址，端口号，超时时间
         jedisPool = new JedisPool(jedisPoolConfig, "192.168.1.223", 6379, 10000);
    }

    // 获取Jedis的方法
    public static Jedis getJedis() {
        //TODO 2、这里要判断一下是否有连接池，如果没有就调用上面方法创建连接池
        if(jedisPool == null ){
            initJedisPool();
        }
        System.out.println("*************~创建Jedis成功~*************");
        //TODO 3、通过连接池获取连接
        Jedis jedis = jedisPool.getResource();
        return jedis;
    }
}
